package src.com.foreknow.demo11;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

public class Master {

    //主人给宠物看病的方法(多态)
    public void cure(Pet pet){
        if (pet.getHealth()< 50){
            pet.toHospital();
        }
    }
    //主人带不同宠物去玩游戏
    public void play(Pet pet) {
        if (pet instanceof Dog) {//如果Dog与Pet有继承关系，返回结果true否则就为false
            Dog dog = (Dog) pet;
            dog.catchFly();
        } else if (pet instanceof Penguin) {
            Penguin penguin = (Penguin) pet;
            penguin.swimming();
        }

    }


    //主人给Penguin看病的方法
//    public void cure(Penguin penguin){
//        if (penguin.getHealth() < 40){
//            penguin.setHealth(60);
//            System.out.println("溜达");
//        }
//
//    }

    public static void main(String[] args) {
        Master master = new Master();
        //父类的引用指向子类的对象
        //Pet p  = new Dog();
        Dog dog = new Dog();
        dog.setHealth(40);
        master.cure(dog);
        master.play(dog);

        //p = new Penguin();
        Penguin penguin = new Penguin();
        penguin.setHealth(20);
        master.cure(penguin);
        master.play(penguin);

//        Dog dog = new Dog();
//        dog.setHealth(40);
//        master.cure(dog);
//
//        Penguin penguin = new Penguin();
//        penguin.setHealth(30);
//
//        System.out.println("-----类型转换-----");
//        int a = 12;//小类型
//        double b = a;//自动类型转换
//        float f = (float) 3.14;
//
//        Dog dd = new Dog();//子类型
//        Pet p1 = dd;//向上造型（自动类型转换）
//
//    Penguin penguin1 = (Penguin) p;//向下造型（强制类型转换）

    }

}









